package cn.HL.system.listener;


import cn.HL.basic.jwt.JwtUtils;
import cn.HL.basic.jwt.LoginResult;
import cn.HL.basic.jwt.Payload;
import cn.HL.basic.jwt.RsaUtils;
import cn.HL.user.domain.Logininfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;

import javax.servlet.http.HttpServletRequest;
import java.security.PublicKey;

//登录上下文，把登录的相关信息放到这里面，方便调用
// 问题1：不受spring管理的类，想要获取受spring管理的bean 只要获取到spring容器就可以从容器中获取
@Slf4j
public class LoginContext {

    /**
     *
     * @param request
     * @return 如果是后台需要返回employee，如果是前台返回user
     */
    public static Logininfo getLoginUser(HttpServletRequest request){
        //获取请求头里面的
        String token = request.getHeader("U-TOKEN");
        //有token
        /*  Object objTem = redisTemplate.opsForValue().get(token);*/
        //现在我们就不从redis里面去拿 我们即系就可以了
        PublicKey publicKey = RsaUtils.getPublicKey(JwtUtils.class.getClassLoader().getResource("hrm_auth_rsa.pub").getFile());
        Payload<LoginResult> payload = JwtUtils.getInfoFromToken(token, publicKey, LoginResult.class);
       return payload.getUserInfo().getLogininfo();
    }
}